// utils/translate_large_model.js
// 翻译请求函数,
// 1.text:需要翻译的文本，可以接收纯文本和html格式的文本；
// 2.from:发来的是什么语言，'zh'-中文；'en'-英文；'ru'-俄文；
// 3.targetLang:目标语言；
// 4.type:文本的类别：1.普通文本；2.html文本；
// 翻译请求函数（完整实现）
// 翻译请求函数（完整实现）
//后端服务器地址
 import request from "@/components/utils/request";

const url='/translateLargeModel'
// utils/translate_large_model.js

 async function translate_large_model(text, from, type) {
    console.log('传来的文本',text)
     // 类型1：普通文本翻译
     if (type === 1) {
         return request.post(url, {
             text: text,
             from: from
         }).then(result => {
             console.log(result.data)
             return result.data
         });
     }

     // 类型2：HTML文本翻译
     if (type === 2) {
         // 创建三个独立DOM副本
         const parser = new DOMParser();
         const originalDoc = parser.parseFromString(text, 'text/html');
         const zhDoc = parser.parseFromString(text, 'text/html');
         const enDoc = parser.parseFromString(text, 'text/html');
         const ruDoc = parser.parseFromString(text, 'text/html');

         // 收集所有文本节点（原始顺序）
         const getTextNodes = (doc) => {
             const nodes = [];
             const treeWalker = document.createTreeWalker(
                 doc.body,
                 NodeFilter.SHOW_TEXT,
                 {
                     acceptNode(node) {
                         const tag = node.parentNode.tagName;
                         if (tag === 'SCRIPT' || tag === 'STYLE')
                             return NodeFilter.FILTER_REJECT;
                         return NodeFilter.FILTER_ACCEPT;
                     }
                 },
                 false
             );
             while (treeWalker.nextNode()) nodes.push(treeWalker.currentNode);
             return nodes;
         };

         // 获取所有语言版本的节点数组（顺序一致）
         const originalNodes = getTextNodes(originalDoc);
         const zhNodes = getTextNodes(zhDoc);
         const enNodes = getTextNodes(enDoc);
         const ruNodes = getTextNodes(ruDoc);

         // 逐个节点处理翻译
         for (let i = 0; i < originalNodes.length; i++) {
             const originalText = originalNodes[i].textContent;

             // 发起翻译请求（假设request是已配置的axios实例）
             const response = await request.post(url, {
                 text: originalText,
                 from: from
             });

             // 更新对应节点
             zhNodes[i].textContent = response.data.zh;
             enNodes[i].textContent = response.data.en;
             ruNodes[i].textContent = response.data.ru;
         }
         console.log({
             zh: zhDoc.body.innerHTML,
             en: enDoc.body.innerHTML,
             ru: ruDoc.body.innerHTML
         })

         // 返回三种语言版本
         return {
             zh: zhDoc.body.innerHTML,
             en: enDoc.body.innerHTML,
             ru: ruDoc.body.innerHTML
         };
     }
 }

export default translate_large_model;